Моделирование систем цифровой связи
OFDM модуляция
Краткие сведения об OFDM модуляции
Ортогональное мультиплексирование с частотным разделением
OFDM (Orthogonal frequency-division multiplexing — ортогональное мультиплексирование с частотным разделением каналов) — технология цифровой модуляции с использованием большого количества близко расположенных ортогональных поднесущих. На практике сигналы OFDM получаются применением обратного быстрого преобразования Фурье.
OFDM относится к классу схем многоканальной модуляции. Благодаря тому, что в процессе работы может передаваться несколько несущих одновременно, шумы не влияют на OFDM в той же степени, что и при однополосной модуляции.
OFDM разделяет высокоскоростной поток данных на низкоскоростные подпотоки данных путем декомпозиции полосы частот передачи на ряд смежных индивидуально модулированных поднесущих. Этот набор параллельных и ортогональных поднесущих несет поток данных, занимая почти ту же полосу пропускания, что и широкополосный канал. Благодаря использованию узких ортогональных поднесущих сигнал OFDM приобретает устойчивость к замираниям в частотно-селективном канале и устраняет интерференцию соседних поднесущих. Межсимвольная интерференция уменьшается, поскольку подпотоки с меньшей скоростью передачи данных имеют длительность символов больше, чем разброс задержек в канале.
На рисунке показано представление ортогональных поднесущих в частотной области в волновой форме OFDM:
Передатчик применяет обратное быстрое преобразование Фурье (IFFT) к символам за раз. Обычно на выходе IFFT получается сумма ортогональных синусоид:
где — символы данных, — символьное время.
Символы данных обычно являются комплексными и могут быть из любого цифрового модуляционного алфавита (например, QPSK, 16-QAM, 64-QAM и т.д.).
Расстояние между поднесущими равно , что обеспечивает ортогональность поднесущих в течение каждого символьного периода.
Модулятор OFDM состоит из последовательно-параллельного преобразования, за которым следует банк из комплексных модуляторов, индивидуально соответствующих каждой поднесущей OFDM.
Распределение поднесущих, защитные полосы и защитные интервалы
Как показано на рисунке, поднесущие OFDM обозначаются как поднесущие данных, нулевой частоты, пилотные или защитные полосы.
- Поднесущие данных передают пользовательские данные.
- Пилотные поднесущие предназначены для оценки канала.
- Поднесущие нулевой частоты не передают никаких данных. Поднесущие без данных обеспечивают нулевую частоту центральной поднесущей и служат в качестве буферов между блоками ресурсов OFDM.
- Защитные полосы служат буфером между соседними сигналами в соседних полосах частот для уменьшения помех, вызванных спектральной утечкой.
Защитные интервалы защищают целостность передаваемых сигналов в OFDM путем снижения межсимвольной интерференции. Защитные интервалы обеспечивают временное разделение между символами OFDM и помогают сохранить межсимвольную ортогональность после прохождения сигнала через каналы с временной дисперсией. Защитные интервалы создаются с помощью циклических префиксов.
Оконная функция с приподнятым косинусом
Оконная функция с приподнятым косинусом используется для ограничения спектрального разрастания сигнала.
Хотя циклический префикс создает защитный период во временной области для сохранения ортогональности, символ OFDM редко начинается с той же амплитудой и фазой, что и в конце предыдущего символа, что вызывает спектральное разрастание и, следовательно, расширение полосы пропускания сигнала из-за интермодуляционных искажений. Чтобы ограничить это спектральное разрастание, можно создать плавный переход между последним отсчетом символа и первым отсчетом следующего символа с помощью циклического суффикса и оконной функции с приподнятым косинусом.
Блоки OFDM модуляции в Engee
В библиотеке Системы связи -> Модуляция -> Цифровая модуляция -> OFDM находятся два блока:
- OFDM Modulator (OFDM модулятор);
- OFDM Demodulator (OFDM демодулятор).
Блок OFDM Modulator характеризуется следующими параметрами:
- FFT length — количество точек БПФ;
- Number of guard bands — количество поднесущих, выделенных для левой и правой защитных полос;
- Insert DC null — исключить или включить поднесущую нулевой частоты;
- Pilot input port — ввод пилотных поднесущих;
- Pilot subcarrier indices — индексы расположения пилотных поднесущих;
- Cyclic prefix length — длина циклического префикса;
- Apply raised cosine windowing between OFDM symbols — применение оконной функции приподнятого косинуса между символами OFDM;
- Window length — длина оконной функции с приподнятым косинусом;
- Oversampling factor — коэффициент передискретизации;
- Number of OFDM symbols — количество OFDM-символов;
- Number of transmit antennas — количество передающих антенн.
Блок OFDM Demodulator характеризуется аналогичными параметрами:
Практическая часть
Далее вы построите модель системы связи на основе OFDM модуляции. В этой модели:
- Генерируются случайный целочисленный набор данных и пилотные входные символы.
- Данные и пилотные символы модулируются с помощью QPSK модулятора.
- QPSK-модулированный сигнал поступает на вход OFDM модулятора, который обрабатывает один OFDM-символ с пилот-сигналом и циклическим префиксом. OFDM-сигнал содержит данные и пилоты, которые модель генерирует с частотой, в четыре раза превышающей частоту дискретизации.
- На сигнал с OFDM модуляцией накладывается аддитивный белый гауссовский шум.
- После этого OFDM демодулятор демодулирует и раздельно выводит данные и пилоты.
- QPSK демодулятор демодулирует данные и пилотные символы.
- Вычисляется частота битовых ошибок.
✏️Задание 1
Смоделируйте данные и пилоты с QPSK модуляцией:
- Создайте новую модель. Добавьте в нее два блока Random Integer Generator и расположите их друг под другом. В окнах настроек блоков задайте следующие значения параметров:
|
Параметр |
Set size |
Sample time |
Samples per frame |
|
Блок 1 |
|
|
|
|
Блок 2 |
|
|
|
Первый блок генерирует символы данных, второй — символы пилот-сигнала.
Примечание
Выбор значений параметра Samples per frame (число отсчетов на фрейм) определяется параметрами OFDM модулятора и будет объяснен в Задании 2.
- Добавьте в модель два блока QPSK Modulator Baseband. Параметры блоков оставьте заданными по умолчанию. Соедините выходы блоков Random Integer Generator со входами блоков QPSK Modulator Baseband.
Решение
✏️Задание 2
Выполните OFDM модуляцию и демодуляцию сигнала:
- Добавьте в модель блок OFDM Modulator. Задайте значения параметров блока так, как показано на рисунке:
- Длина БПФ равна
64; - Число поднесущих в левой защитной полосе равно
6, а в правой защитной полосе —5; - Поднесущая нулевой частоты включена;
- Порт для ввода пилотных поднесущих включен;
- Номера пилотных поднесущих равны
12,26,40и54; - Длина циклического префикса равна
16; - Оконная функция приподнятого косинуса не применяется;
- Коэффициент передискретизации равен
4; - Число OFDM-символов равно
1; - Число передающих антенн равно
1.
Примечание
Число поднесущих, на которых передаются данные, рассчитывается следующим образом:
- — длина БПФ (
64); - — число поднесущих в левой защитной полосе (
6); - — число поднесущих в правой защитной полосе (
5); - — число нулевых поднесущих (
1); - — число пилотных поднесущих (
4).
Отсюда получаем:
Именно такое значение должен иметь параметр Samples per frame (число отсчетов на фрейм) первого блока Random Integer Genetator, генерирующего символы данных.
Число отсчетов на фрейм для второго блока Random Integer Genetator, генерирующего символы для пилот-сигналов, равно числу пилотных поднесущих (4).
-
Соедините верхний входной порт блока OFDM Modulator с выходом первого блока QPSK Modulator Baseband, модулирующего данные. Соедините нижний входной порт блока OFDM Modulator (Pilot) с выходом второго блока QPSK Modulator Baseband, модулирующего пилот-сигнал.
-
Добавьте в модель блок AWGN Channel, моделирующий гауссовский канал связи. Параметры блока оставьте заданными по умолчанию ( дБ). Соедините входной порт этого блока с выходом блока OFDM Modulator.
-
Добавьте в модель блок OFDM Demodulator. Параметры OFDM демодулятора задаются аналогично параметрам OFDM модулятора:
Соедините входной порт этого блока с выходом блока AWGN Channel.
Решение
✏️Задание 3
Демодулируйте данные и пилоты:
-
Добавьте в модель два блока Изменение формы. Оставьте значение параметра Форма выходного сигнала равным
Одномерный массив (1D)для того, чтобы на вход QPSK демодулятора поступали сигналы правильной формы (векторы-столбцы). Соедините входы этих блоков с выходами блока OFDM Demodulator. -
Добавьте в модель два блока QPSK Demodulator Baseband. Параметры блоков оставьте заданными по умолчанию. Соедините входы этих блоков с выходами блоков Изменение формы.
Решение
✏️Задание 4
Добавьте блоки для расчета частоты битовых ошибок:
-
Добавьте в модель блок Изменение формы. Сделайте ответвление от линии, выходящей из первого блока Random Integer Generator, генерирующего символы данных, и соедините его со входом блока Изменение формы. Значение параметра Форма выходного сигнала оставьте равным
Одномерный массив (1D). -
Добавьте в модель два блока Integer to Bit Converter. Соедините вход первого блока Integer to Bit Converter с выходом только что добавленного блока Изменение формы , а вход второго блока — с выходом первого блока QPSK Demodulator Baseband, демодулирующего данные. В окнах настроек обоих блоков задайте значение параметра Number of bits per integer равным
2. -
Добавьте в модель блок Error Rate Calculation. Соедините выход первого блока Integer to Bit Converter с входным портом Tx блока Error Rate Calculation, а выход второго блока Integer to Bit Converter — с входным портом Rx блока Error Rate Calculation.
-
Добавьте в модель блок В рабочую область. В окне настроек блока задайте значение параметра Имя переменной равным
BER. Соедините выход блока Error Rate Calculation со входом блока В рабочую область. -
Повторно выполните пункты 1–4 для того чтобы рассчитать величину BER для пилот-сигнала. Напомним, что к входному порту Tx блока Error Rate Calculation подключается переданный сигнал, а к порту Rx — принятый сигнал. В окне настроек нового блока В рабочую область задайте параметр Имя переменной равным
BER_Pilot.
Решение
✏️Задание 5
Завершите настройку модели, запустите симуляцию и выведите результаты:
- Залогируйте сигнал на выходе блока OFDM Modulator.
- В окне настроек модели задайте размер шага равным
1/192. Знаменатель этой дроби представляет собой произведение знаменателей дробей1/48и1/4, являющихся размерами шага блоков Random Integer Generator, которые генерируют символы данных и пилот-сигнала. - Запустите модель.
- Постройте спектр сигнала, получившегося на выходе блока OFDM Modulator. Для этого в окне графиков выберите значение параметра Выбор типа отображения равным Сигналы в частотной области.
- Рассчитайте частоту битовых ошибок для данных (
ber) и для пилот-сигнала (ber_pilot), запустив следующий код:
BER = collect(BER)
ber = BER.value[end][1]
BER_Pilot = collect(BER_Pilot)
ber_pilot = BER_Pilot.value[end][1]
println(ber)
println(ber_pilot)
Решение
Спектр OFDM-модулированного сигнала: